home *** CD-ROM | disk | FTP | other *** search
- TEXT
- Begin:
- PEA 0.W
- MOVE.W #$20,-(A7)
- TRAP #1
- ADDQ.W #6,A7
- BSR MAP_GENERATOR
- BSR MAP_LIGHT
- BSR CALC_Z_TAB
- BSR DEF_SCREEN
- LEA NFDSP,A6
- BSR DSP_LOAD
- BSR SEND_DATA_2_DSP
- BSR SET_REZ
- BSR TEST
- BSR TEST2
- MOVE.W #7,-(A7)
- TRAP #1
- ADDQ.L #2,A7
- BSET #0,$FFFF82C3.W
- MOVE.L #$F0,$FFFF9800.W
- VBL_LOOPZ: MOVE.W #$25,-(A7)
- TRAP #$E
- ADDQ.L #2,A7
- MOVE.B L0035,$FFFF8201.W
- MOVE.B L0036,$FFFF8203.W
- MOVE.B L0037,$FFFF820D.W
- MOVE.W Y_POS,D0
- LSL.W #7,D0
- OR.W X_POS,D0
- L0001: BTST #1,$FFFFA202.W
- BEQ.S L0001
- MOVE.W D0,$FFFFA206.W
- MOVE.W #$7E0,D4
- LEA $FFFFA206.W,A6
- MOVEA.L BACK,A0
- RECEPT0: BTST #0,$FFFFA202.W
- BEQ.S RECEPT0
- MOVE.W (A6),D0
- BMI.S END_MM
- MOVE.W (A6),D1
- MOVE.W (A6),D2
- MOVE.W (A6),D3
- LEA (A0,D0.W*4),A1
- MOVE.W D2,D5
- AND.W D4,D5
- MM_GOURO: MOVE.W D5,(A1)+
- ADD.W D3,D2
- MOVE.W D5,(A1)+
- MOVE.W D2,D5
- AND.W D4,D5
- LEA 764(A1),A1
- DBF D1,MM_GOURO
- BRA.S RECEPT0
- END_MM: MOVEA.L BACK,A0
- LEA $FFFFA206.W,A6
- MOVE.W #$1E,D7
- SWAP D7
- MOVE.W #$1E,D7
- RECEPT1: BTST #0,$FFFFA202.W
- BEQ.S RECEPT1
- MOVE.W (A6),D0
- BMI.S END_MM_CLS
- MOVE.W (A6),D1
- LEA (A0,D0.W*4),A1
- MM_CLS: MOVE.L D7,(A1)
- LEA 768(A1),A1
- DBF D1,MM_CLS
- BRA RECEPT1
- END_MM_CLS: MOVE.L PHYSIK,D0
- MOVE.L BACK,PHYSIK
- MOVE.L D0,BACK
- MOVE.B $FFFFFC02.W,D1
- MOVE.W Y_POS,D0
- CMPI.B #$48,D1
- BNE.S NO_UP
- SUBQ.W #1,D0
- NO_UP: CMPI.B #$50,D1
- BNE.S NO_DOWN
- ADDQ.W #1,D0
- NO_DOWN: ANDI.W #$7F,D0
- MOVE.W D0,Y_POS
- MOVE.W X_POS,D0
- CMPI.B #$4B,D1
- BNE.S NO_LEFT
- SUBQ.W #1,D0
- NO_LEFT: CMPI.B #$4D,D1
- BNE.S NO_RIGHT
- ADDQ.W #1,D0
- NO_RIGHT: ANDI.W #$7F,D0
- MOVE.W D0,X_POS
- CMPI.B #$39,$FFFFFC02.W
- BNE VBL_LOOPZ
- BSR TEND_REZ
- CLR.W -(A7)
- TRAP #1
- SEND_DATA_2_DSP: LEA $FFFFA204.W,A0
- WAIT_DSP1: BTST #1,$FFFFA202.W
- BEQ WAIT_DSP1
- MOVEQ #1,D0
- MOVE.W #$81,D7
- SEND1: MOVE.L #$800000,D1
- DIVU.L D0,D1
- MOVE.L D1,(A0)
- ADDQ.L #1,D0
- DBF D7,SEND1
- WAIT_DSP2: BTST #1,$FFFFA202.W
- BEQ WAIT_DSP2
- LEA Z_TAB,A1
- MOVEQ #7,D6
- MOVE.W #$3B,D7
- SEND2: MOVEQ #0,D0
- MOVE.W (A1)+,D0
- MOVE.L D0,(A0)
- MOVEQ #0,D0
- MOVE.W (A1)+,D0
- LSL.L D6,D0
- MOVE.L D0,(A0)
- MOVEQ #0,D0
- MOVE.W (A1)+,D0
- LSL.L D6,D0
- MOVE.L D0,(A0)
- DBF D7,SEND2
- WAIT_DSP0: BTST #1,$FFFFA202.W
- BEQ WAIT_DSP0
- LEA MAP,A1
- LEA COLOR_MAP,A2
- MOVE.W #$3FFF,D7
- SEND0: MOVEQ #0,D0
- MOVE.B (A2)+,D0
- SWAP D0
- MOVE.W (A1)+,D0
- MOVE.L D0,(A0)
- DBF D7,SEND0
- RTS
- CALC_Z_TAB: LEA Z_TAB,A0
- MOVEQ #0,D0
- MOVE.W #8,D0
- MOVE.L #$10000,D1
- MOVEQ #0,D2
- MOVEQ #0,D6
- MOVE.W #$60,D4
- MOVE.W #7,D5
- MOVEQ #$3B,D7
- CALC_Z_TAB_LOOPZ: MOVE.W #$80,D3
- ADD.W D2,D3
- ADD.W D0,D3
- SUB.W D6,D3
- MOVE.W D0,D2
- MOVE.W D3,(A0)+
- SWAP D0
- MOVE.L D0,D3
- DIVU D4,D3
- MOVE.W D3,(A0)+
- MULU #$C0,D3
- SWAP D3
- MOVE.W D2,D6
- ADD.W D6,D6
- SUB.W D3,D6
- MOVEQ #0,D3
- MOVE.W D4,D3
- SWAP D3
- LSR.L D5,D3
- DIVU D2,D3
- MOVE.W D3,(A0)+
- ADD.L D1,D0
- SWAP D0
- DBF D7,CALC_Z_TAB_LOOPZ
- RTS
- MAP_LIGHT: LEA MAP,A0
- LEA COLOR_MAP,A1
- MOVE.W #4,D6
- MOVE.W #$3FFF,D7
- NEXT_LIGHT_TO_CA: MOVE.W (A0)+,D0
- SUB.W (A0),D0
- ASR.W D6,D0
- ADDI.W #$20,D0
- CMPI.W #1,D0
- BPL.S NO_LIGHT_NEG
- MOVEQ #1,D0
- BRA.S NO_TOO_LIGHT
- NO_LIGHT_NEG: CMPI.W #$3F,D0
- BLS.S NO_TOO_LIGHT
- MOVEQ #$3F,D0
- NO_TOO_LIGHT: MOVE.B D0,(A1)+
- DBF D7,NEXT_LIGHT_TO_CA
- RTS
- MAP_GENERATOR: LEA MAP,A6
- MOVE.W #$3FFF,D6
- MOVE.W #$11,-(A7)
- TRAP #$E
- ADDQ.L #2,A7
- AND.W D6,D0
- ADDI.W #$2000,D0
- MOVE.W D0,(A6)
- MOVE.W #$11,-(A7)
- TRAP #$E
- ADDQ.L #2,A7
- AND.W D6,D0
- ADDI.W #$2000,D0
- MOVE.W D0,128(A6)
- MOVE.W #$11,-(A7)
- TRAP #$E
- ADDQ.L #2,A7
- AND.W D6,D0
- ADDI.W #$2000,D0
- MOVE.W D0,16384(A6)
- MOVE.W #$11,-(A7)
- TRAP #$E
- ADDQ.L #2,A7
- AND.W D6,D0
- ADDI.W #$2000,D0
- MOVE.W D0,16512(A6)
- MOVE.W #$20,D7
- NEXT_PASS: LSR.W #1,D6
- MOVE.W D7,D4
- P1_PART_Y: MOVE.W D7,D5
- P1_PART_X: MOVE.W #$11,-(A7)
- TRAP #$E
- ADDQ.L #2,A7
- AND.W D6,D0
- MOVE.W D6,D1
- ADDQ.W #1,D1
- LSR.W #1,D1
- SUB.W D1,D0
- MOVEQ #0,D2
- MOVEQ #0,D3
- MOVE.W D4,D1
- SUB.W D7,D1
- LSL.W #7,D1
- ADD.W D5,D1
- SUB.W D7,D1
- MOVE.W (A6,D1.W*2),D2
- MOVE.W D4,D1
- ADD.W D7,D1
- ANDI.W #$7F,D1
- LSL.W #7,D1
- ADD.W D5,D1
- SUB.W D7,D1
- MOVE.W (A6,D1.W*2),D3
- ADD.L D3,D2
- MOVE.W D4,D1
- ADD.W D7,D1
- ANDI.W #$7F,D1
- LSL.W #7,D1
- MOVE.W D5,D3
- ADD.W D7,D3
- ANDI.W #$7F,D3
- ADD.W D3,D1
- MOVE.W (A6,D1.W*2),D3
- ADD.L D3,D2
- MOVE.W D4,D1
- SUB.W D7,D1
- LSL.W #7,D1
- MOVE.W D5,D3
- ADD.W D7,D3
- ANDI.W #$7F,D3
- ADD.W D3,D1
- MOVE.W (A6,D1.W*2),D3
- ADD.L D3,D2
- LSR.L #2,D2
- ADD.W D0,D2
- MOVE.W D4,D1
- LSL.W #7,D1
- ADD.W D5,D1
- MOVE.W D2,(A6,D1.W*2)
- MOVE.W D7,D1
- ADD.W D1,D1
- ADD.W D1,D5
- CMPI.W #$80,D5
- BCS P1_PART_X
- ADD.W D1,D4
- CMPI.W #$80,D4
- BCS P1_PART_Y
- MOVE.W D7,D4
- P2_PART_Y: MOVEQ #0,D5
- P2_PART_X: MOVE.W #$11,-(A7)
- TRAP #$E
- ADDQ.L #2,A7
- AND.W D6,D0
- MOVE.W D6,D1
- ADDQ.W #1,D1
- LSR.W #1,D1
- SUB.W D1,D0
- MOVEQ #0,D2
- MOVEQ #0,D3
- MOVE.W D4,D1
- SUB.W D7,D1
- LSL.W #7,D1
- ADD.W D5,D1
- MOVE.W (A6,D1.W*2),D2
- MOVE.W D4,D1
- LSL.W #7,D1
- MOVE.W D5,D3
- SUB.W D7,D3
- ANDI.W #$7F,D3
- ADD.W D3,D1
- MOVE.W (A6,D1.W*2),D3
- ADD.L D3,D2
- MOVE.W D4,D1
- ADD.W D7,D1
- ANDI.W #$7F,D1
- LSL.W #7,D1
- ADD.W D5,D1
- MOVE.W (A6,D1.W*2),D3
- ADD.L D3,D2
- MOVE.W D4,D1
- LSL.W #7,D1
- MOVE.W D5,D3
- ADD.W D7,D3
- ANDI.W #$7F,D3
- ADD.W D3,D1
- MOVE.W (A6,D1.W*2),D3
- ADD.L D3,D2
- LSR.L #2,D2
- ADD.W D0,D2
- MOVE.W D4,D1
- LSL.W #7,D1
- ADD.W D5,D1
- MOVE.W D2,(A6,D1.W*2)
- SUB.W D7,D4
- ADD.W D7,D5
- MOVE.W #$11,-(A7)
- TRAP #$E
- ADDQ.L #2,A7
- AND.W D6,D0
- MOVE.W D6,D1
- ADDQ.W #1,D1
- LSR.W #1,D1
- SUB.W D1,D0
- MOVEQ #0,D2
- MOVEQ #0,D3
- MOVE.W D4,D1
- SUB.W D7,D1
- ANDI.W #$7F,D1
- LSL.W #7,D1
- ADD.W D5,D1
- MOVE.W (A6,D1.W*2),D2
- MOVE.W D4,D1
- LSL.W #7,D1
- ADD.W D5,D1
- SUB.W D7,D1
- MOVE.W (A6,D1.W*2),D3
- ADD.L D3,D2
- MOVE.W D4,D1
- ADD.W D7,D1
- ANDI.W #$7F,D1
- LSL.W #7,D1
- ADD.W D5,D1
- MOVE.W (A6,D1.W*2),D3
- ADD.L D3,D2
- MOVE.W D4,D1
- LSL.W #7,D1
- MOVE.W D5,D3
- ADD.W D7,D3
- ANDI.W #$7F,D3
- ADD.W D3,D1
- MOVE.W (A6,D1.W*2),D3
- ADD.L D3,D2
- LSR.L #2,D2
- ADD.W D0,D2
- MOVE.W D4,D1
- LSL.W #7,D1
- ADD.W D5,D1
- MOVE.W D2,(A6,D1.W*2)
- ADD.W D7,D4
- ADD.W D7,D5
- CMPI.W #$80,D5
- BCS P2_PART_X
- MOVE.W D7,D1
- ADD.W D1,D1
- ADD.W D1,D4
- CMPI.W #$80,D4
- BCS P2_PART_Y
- LSR.W #1,D7
- BNE NEXT_PASS
- MOVE.W MAP,L002D
- RTS
- TEST: LEA MAP,A0
- MOVEA.L BACK,A1
- MOVE.W #$7E0,D5
- MOVEQ #$7F,D6
- TEST_Y: MOVEQ #$7F,D7
- TEST_X: MOVE.W (A0)+,D0
- LSL.W #1,D0
- LSR.W #5,D0
- AND.W D5,D0
- MOVE.W D0,(A1)+
- DBF D7,TEST_X
- ADDA.W #$200,A1
- DBF D6,TEST_Y
- RTS
- TEST2: LEA COLOR_MAP,A0
- MOVEA.L BACK,A1
- ADDA.W #$102,A1
- MOVE.W #$7E0,D5
- MOVEQ #$7F,D6
- TEST_Y2: MOVEQ #$7F,D7
- TEST_X2: MOVE.B (A0)+,D0
- LSL.W #5,D0
- AND.W D5,D0
- MOVE.W D0,(A1)+
- DBF D7,TEST_X2
- ADDA.W #$200,A1
- DBF D6,TEST_Y2
- RTS
- DEF_SCREEN: MOVE.L #L003A,D0
- ANDI.B #$FC,D0
- MOVE.L D0,BACK
- ADDI.L #$16800,D0
- MOVE.L D0,PHYSIK
- RTS
- SET_REZ: DC.B $A0,$0A
- MOVE.W #2,-(A7)
- TRAP #$E
- ADDQ.L #2,A7
- MOVE.L D0,OLD_PBAS
- MOVE.W #$FFFF,-(A7)
- MOVE.W #$58,-(A7)
- TRAP #$E
- ADDQ.L #4,A7
- MOVE.W D0,OLD_REZO
- MOVE.W #$44,-(A7)
- MOVE.W #3,-(A7)
- MOVE.L BACK,-(A7)
- MOVE.L BACK,-(A7)
- MOVE.W #5,-(A7)
- TRAP #$E
- ADDA.L #$E,A7
- MOVE.W #$25,-(A7)
- TRAP #$E
- ADDQ.L #2,A7
- RTS
- TEND_REZ: MOVE.W OLD_REZO,-(A7)
- MOVE.W #3,-(A7)
- MOVE.L OLD_PBAS,-(A7)
- MOVE.L OLD_PBAS,-(A7)
- MOVE.W #5,-(A7)
- TRAP #$E
- ADDA.L #$E,A7
- DC.B $A0,$09
- RTS
- DSP_LOAD: PEA YAV
- PEA XAV
- MOVE.W #$6A,-(A7)
- TRAP #$E
- ADDA.L #$A,A7
- MOVE.L YAV,-(A7)
- MOVE.L XAV,-(A7)
- MOVE.W #$6B,-(A7)
- TRAP #$E
- ADDA.L #$A,A7
- PEA BUF_DSP
- MOVE.W #3,-(A7)
- PEA (A6)
- MOVE.W #$6C,-(A7)
- TRAP #$E
- ADDA.L #$C,A7
- RTS
- DATA
- NFDSP: DC.B $6D,$61,$72,$73,$2E,$6C,$6F,$64,$00,$00
- X_POS: DC.B $00,$7F
- Y_POS: DC.B $00,$0A
- BSS
- MAP: DS.B 32768
- L002D: DS.W 1
- COLOR_MAP: DS.B 16384
- Z_TAB: DS.B 1128
- XAV: DS.L 1
- YAV: DS.L 1
- BUF_DSP: DS.B 8000
- BACK: DS.L 1
- PHYSIK: DS.B 1
- L0035: DS.B 1
- L0036: DS.B 1
- L0037: DS.B 1
- OLD_REZO: DS.W 1
- OLD_PBAS: DS.B 256008
- L003A: DS.B 368640
- ZUEND: END
-